ZeUsMedlem sedan nov. 200188 inlägg Några frågor:
-
Vilket är det bästa sättet att integrera SQL och vb?
är det genom adodc kontroll och recordsource eller finns det något bättre sätt?
-
Jag ville lägga till en ny rad till min tabell så jag gjorde följande:
Jag la in SQL uttrycket under i strängen record
insert into "tabell" (insert into "tablename"
(first_column,...last_column)
values (first_value,...last_value);
sedan satte jag den som recordsource:
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
Nu kommer det skumma, det läggs till en ny rad i tabellen men jag får ändå ett felmeddelande från adodc kontrollen som lyder:
Operation is not allowed when the object is closed.
Väldigt skumt!
Kan någon snäll människa hjälpa mig med detta?
Om inte kanske ni har någon bättre lösning på problemet.
Helst med adodc kontroll eftersom hela mitt projekt är uppbyggt kring den.
Jag passar på att tacka på förhand...
Det lär ju inte heller vara sista gången ni ser ett inlägg från mig, dyker hela tiden upp nya problem :)
P.S All den hjälp jag hittills fått av webforum har varit ovärderlig!
Tack, tack, tack, tack.... :f
InsiderMedlem sedan jan. 2000978 inlägg Det felet brukar dyka upp när man inte har öppnat databaskopplingen eller recordsetet.
ZeUsMedlem sedan nov. 200188 inlägg Option Explicit
Dim faltnamn(0 To 15) As String
Dim antal_faelt_alla As Integer
Private Sub cboTabell_Change()
Dim tabell As String
tabell = cboTabell.text
End Sub
Private Sub cmdOk_Click()
Dim i As Integer, text(0 To 15), record As String, record2 As String, buffert As String, _
faltnamn2(0 To 15) As String, antal As Integer
record = "Select * From dm02"
'------------------------------ Uppdaterar vad som ska visas från databasen
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
antal_faelt_alla = frmTelefonbok!adoAdresser.Recordset.Fields.Count - 1
For i = 0 To antal_faelt_alla
faltnamn2(i) = frmTelefonbok!adoAdresser.Recordset.Fields(i).Name
text(i) = txtFaltnamn(i)
Next i
record = "insert into dm02 (" & faltnamn2(0)
record2 = "values ('" & text(0) & "'"
For i = 1 To antal_faelt_alla
If antal_faelt_alla < 1 Then
record = record & ")"
record2 = record & "');"
Else
record = record & ", " & faltnamn2(i)
record2 = record2 & ", '" & text(i) & "'"
End If
Next i
record = record & ") "
record2 = record2 & ") "
record = record & record2
Text1.text = record
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
End Sub
Private Sub Form_Load()
Dim i As Integer, rubriklangd As Integer, record As String
Dim hojd As Integer
record = "Select * From dm02"
'------------------------------ Uppdaterar vad som ska visas från databasen
With frmTelefonbok!adoAdresser
.RecordSource = record
.Refresh
End With
antal_faelt_alla = frmTelefonbok!adoAdresser.Recordset.Fields.Count - 1
hojd = antal_faelt_alla * 567 + 3015
'frmLaggaTill.Height = hojd
frmLaggaTill.cmdOk.Top = hojd - 567
frmLaggaTill.Refresh
For i = 0 To antal_faelt_alla
'------------------------------ rubrik
faltnamn(i) = frmTelefonbok!adoAdresser.Recordset.Fields(i).Name
'-------------------------- rubriklängd
rubriklangd = Len(faltnamn(i))
'-------------------------- Storbokstav i början
faltnamn(i) = UCase(Left(faltnamn(i), 1)) & LCase(Right(faltnamn(i), rubriklangd - 1))
'-------------------------- Lägger till ":"
faltnamn(i) = faltnamn(i) & ":"
'-------------------------- Uppdaterar Caption och sätter fälten visble
lblfaltnamn(i).Caption = faltnamn(i)
lblfaltnamn(i).Visible = True
txtFaltnamn(i).Visible = True
Next i
End Sub
Det är koden ovan som returnerar felmeddelandet jag nämde tidigare.
ZeUsMedlem sedan nov. 200188 inlägg Arghh, är det ingen som kan ?
Snälla...
Jobbar med ett projekt som ska vara inne snart...
UlfTMedlem sedan maj 20018 027 inlägg
Arghh, är det ingen som kan ?
Jag tycker du fick ett bra svar från Insider. Jag ser inte i din källkod att du öppnar vare sig någon connection eller recordset. Du skulle (något förenklat) kunna göra något i stil med:
Dim con As ADODB.Connection
Dim rsResult As ADODB.Recordset
Set con = New ADODB.Connection
'Öppna connection
con.ConnectionString = "UID=user;PWD=password;driver={Microsoft ODBC for Oracle};SERVER=dbdator;"
con.Open
Set rsResult = New ADODB.Recordset
'Öppna recordset
rsResult.Open "select * from tbl", con, adOpenDynamic
ZeUsMedlem sedan nov. 200188 inlägg Tack så mycket det fungerade.
Antar att Insider hade rätt men jag var inte på det klara med hur jag skulle göra för att öppna recordsetet..=)