Sub GestionImpressionCarnet(Optional p_s_refOF As Variant, Optional p_s_refRadeau As Variant) Dim l_s_mess As String
Dim l_s_sql As String
Dim l_re As New adodb.Recordset
Dim l_i_Carnet As Integer
Dim l_i_boucle As Integer
Dim l_b_ret As Boolean
Dim l_i_ret As Integer On Error GoTo GestionImpressionCarnet_err l_s_sql = "SELECT * FROM T_RADEAUX WHERE "
If (Not IsMissing(p_s_refRadeau)) Then
l_s_sql = l_s_sql & "C_NumRadeaux=" & TextSQL(p_s_refRadeau) & " "
Else
l_s_sql = l_s_sql & "C_NumOFPliage=" & TextSQL(p_s_refOF) & " AND C_Carnet <2 "
l_s_sql = l_s_sql & "ORDER BY C_IdOrdre "
End If
l_re.Open l_s_sql, g_db_new, adOpenDynamic, adLockPessimistic If l_re.EOF Then MsgBox "Il n'y a pas de radeaux dont le carnet doit re imprim End If Do While Not l_re.EOF l_i_Carnet = l_re!C_Carnet
For l_i_boucle = (l_i_Carnet Mod 2) To 1
l_s_mess = "Impression du carnet "
If (l_i_boucle Mod 2) = 0 Then
l_s_mess = l_s_mess & "rouge"
Else
l_s_mess = l_s_mess & "bleu"
End If
l_s_mess = l_s_mess & " du radeau " & l_re!C_NumRadeaux & vbCrLf & vbCrLf l_i_ret = MsgBox(l_s_mess, vbOKCancel, "Impression") If (l_i_ret = vbCancel) Then Exit Do
End If l_b_ret = ImprimerCarnet(l_re!C_NumRadeaux) If (l_b_ret = True) Then l_re!C_Carnet = l_re!C_Carnet + 1
l_re.Update
Else Exit Do
End If
Next
l_re.MoveNext
Loop l_re.Close
Exit Sub '---------------------- SORTIE EN ERREUR ---------------------
GestionImpressionCarnet_err:
MsgBox Error$
Exit Sub
Resume
End Sub
'------------
TextSQL方法
Public Function TextSQL(ByVal p_s_text As String) As String
Dim l_i_pos As Integer
'Commence par doubler les 関entuels guillemets pr閟ents dans la cha颓e
l_i_pos = 1
Do
l_i_pos = InStr(l_i_pos, p_s_text, "'")
If l_i_pos = 0 Then
Exit Do
End If
p_s_text = Left$(p_s_text, l_i_pos) & "'" & Mid$(p_s_text, l_i_pos + 1)
l_i_pos = l_i_pos + 2
Loop
TextSQL = "'" + p_s_text + "'"
End Function
Dim l_s_sql As String
Dim l_re As New adodb.Recordset
Dim l_i_Carnet As Integer
Dim l_i_boucle As Integer
Dim l_b_ret As Boolean
Dim l_i_ret As Integer On Error GoTo GestionImpressionCarnet_err l_s_sql = "SELECT * FROM T_RADEAUX WHERE "
If (Not IsMissing(p_s_refRadeau)) Then
l_s_sql = l_s_sql & "C_NumRadeaux=" & TextSQL(p_s_refRadeau) & " "
Else
l_s_sql = l_s_sql & "C_NumOFPliage=" & TextSQL(p_s_refOF) & " AND C_Carnet <2 "
l_s_sql = l_s_sql & "ORDER BY C_IdOrdre "
End If
l_re.Open l_s_sql, g_db_new, adOpenDynamic, adLockPessimistic If l_re.EOF Then MsgBox "Il n'y a pas de radeaux dont le carnet doit re imprim End If Do While Not l_re.EOF l_i_Carnet = l_re!C_Carnet
For l_i_boucle = (l_i_Carnet Mod 2) To 1
l_s_mess = "Impression du carnet "
If (l_i_boucle Mod 2) = 0 Then
l_s_mess = l_s_mess & "rouge"
Else
l_s_mess = l_s_mess & "bleu"
End If
l_s_mess = l_s_mess & " du radeau " & l_re!C_NumRadeaux & vbCrLf & vbCrLf l_i_ret = MsgBox(l_s_mess, vbOKCancel, "Impression") If (l_i_ret = vbCancel) Then Exit Do
End If l_b_ret = ImprimerCarnet(l_re!C_NumRadeaux) If (l_b_ret = True) Then l_re!C_Carnet = l_re!C_Carnet + 1
l_re.Update
Else Exit Do
End If
Next
l_re.MoveNext
Loop l_re.Close
Exit Sub '---------------------- SORTIE EN ERREUR ---------------------
GestionImpressionCarnet_err:
MsgBox Error$
Exit Sub
Resume
End Sub
'------------
TextSQL方法
Public Function TextSQL(ByVal p_s_text As String) As String
Dim l_i_pos As Integer
'Commence par doubler les 関entuels guillemets pr閟ents dans la cha颓e
l_i_pos = 1
Do
l_i_pos = InStr(l_i_pos, p_s_text, "'")
If l_i_pos = 0 Then
Exit Do
End If
p_s_text = Left$(p_s_text, l_i_pos) & "'" & Mid$(p_s_text, l_i_pos + 1)
l_i_pos = l_i_pos + 2
Loop
TextSQL = "'" + p_s_text + "'"
End Function
http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx
public string TextSQL(string p_s_text )
{
int l_i_pos;
l_i_pos = 1;
Do
l_i_pos=string.CompareOrdinal(p_s_text,0,"'",l_i_pos );
if (l_i_pos = 0)
{
Exit Do ;
}
p_s_text = Left(p_s_text, l_i_pos) + "'" + Mid(p_s_text, l_i_pos + 1) ;
l_i_pos = l_i_pos + 2 ;
Loop
TextSQL = "'" + p_s_text + "'" ;
}
{
string l_s_mess ;
string l_s_sql ;
l_re = new adodb.Recordset;//不对
string l_i_Carnet ;
string l_i_boucle;
string l_b_ret ;
string l_i_ret ;
try
{
l_s_sql = "SELECT * FROM T_RADEAUX WHERE " ;
if (! IsMissing(p_s_refRadeau))//IsMissing不对
{
l_s_sql = l_s_sql + "C_NumRadeaux=" + TextSQL(p_s_refRadeau) + " " ;
}
else
{
l_s_sql = l_s_sql + "C_NumOFPliage=" + TextSQL(p_s_refOF) + " AND C_Carnet <2 " ;
l_s_sql = l_s_sql + "ORDER BY C_IdOrdre " ;
}
l_re.Open l_s_sql, g_db_new, adOpenDynamic, adLockPessimistic ;//数据库操作改了
if (l_re.EOF)//记录最后一条的判断也变了
{
MessageBox.Show("Il n'y a pas de radeaux dont le carnet doit re imprim ");
} }catch(exception ex)
{
MessageBox.Show(ex);
Exit;
}
}
先帮你改这些吧,实在是费劲。
Dim l_i_pos As Integer
l_i_pos = 1
Do
l_i_pos = InStr(l_i_pos, p_s_text, "'") 这里InStr函数 里面"'" 这是什么意思啊。。这个函数就和C#里的IndexOf()一样,可是不知道这个"'" 是什么意思
public interface CarnetVar {
public <type> GetData();
}
and
private void GestionImpressionCarnet(CarnetVar toto);但是我不知道具体怎么做。
这个不懂是什么意思。谁讲解下,谢谢了
这个的意思就是: 在p_s_text字符串中从第l_i_pos位开始找“'“的索引。
public interface CarnetVar {
public <type> GetData();
}
and
private void GestionImpressionCarnet(CarnetVar toto); 用接口这个可以吗但是我不会啊。